﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category0
{
  public class MT097 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagDefinition U0004;
    private static SwiftTagSubItemDefinition U0005;
    private static SwiftTagSubItemDefinition U0006;
    private static SwiftTagSubItemDefinition U0007;
    private static SwiftTagDefinition U0008;
    private static SwiftTagSubItemDefinition U000E;
    private static SwiftTagDefinition U000F;
    private static SwiftTagSubItemDefinition U0010;
    private static SwiftTagDefinition U0011;
    private static SwiftTagSubItemDefinition U0012;
    private static SwiftTagDefinition U0013;
    private static SwiftTagSubItemDefinition U0014;

    [Description("Service Code")]
    public Tag103 ServiceCode_103
    {
      get
      {
        return new Tag103((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U0002);
      }
    }

    [Description("Service Code")]
    public Tag103 Tag103_ServiceCode
    {
      get
      {
        return this.ServiceCode_103;
      }
    }

    [Description("")]
    public Tag109 OriginalUserMessageReference_109
    {
      get
      {
        return new Tag109((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U0004);
      }
    }

    [Description("")]
    public Tag109 Tag109_OriginalUserMessageReference
    {
      get
      {
        return this.OriginalUserMessageReference_109;
      }
    }

    [Description("Accept Reject")]
    public Tag451 AcceptReject_451
    {
      get
      {
        return new Tag451((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U0008);
      }
    }

    [Description("Accept Reject")]
    public Tag451 Tag451_AcceptReject
    {
      get
      {
        return this.AcceptReject_451;
      }
    }

    [Description("Abort Reason")]
    public Tag432 AbortReason_432
    {
      get
      {
        return new Tag432((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U000F);
      }
    }

    [Description("Abort Reason")]
    public Tag432 Tag432_AbortReason
    {
      get
      {
        return this.AbortReason_432;
      }
    }

    [Description("Payment Release Information Sender")]
    public Tag114 PaymentReleaseInformationSender_114
    {
      get
      {
        return new Tag114((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U0011);
      }
    }

    [Description("Payment Release Information Sender")]
    public Tag114 Tag114_PaymentReleaseInformationSender
    {
      get
      {
        return this.PaymentReleaseInformationSender_114;
      }
    }

    [Description("Payment Release Information Receiver")]
    public Tag115 PaymentRealeaseInformationReceiver_115
    {
      get
      {
        return new Tag115((SwiftElement) this, 0, (SwiftDefinitionElement) MT097.U0013);
      }
    }

    [Description("Payment Release Information Receiver")]
    public Tag115 Tag115_PaymentRealeaseInformationReceiver
    {
      get
      {
        return this.PaymentRealeaseInformationReceiver_115;
      }
    }

    public MT097()
      : base(true)
    {
    }

    public MT097(SwiftMessage message)
      : base(message)
    {
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT097.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT097.MessageDefinition = new SwiftMessageDefinition("MT097", "");
      MT097.U0002 = new SwiftTagDefinition("ServiceCode_103", "Service Code");
      MT097.U0002.TagName = "{103:";
      MT097.U0003 = new SwiftTagSubItemDefinition("ServiceCode", "Service Code");
      MT097.U0002.Elements.Add((SwiftDefinitionElement) MT097.U0003);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U0002);
      MT097.U0004 = new SwiftTagDefinition("OriginalUserMessageReference_109", "");
      MT097.U0004.TagName = "{109:";
      MT097.U0005 = new SwiftTagSubItemDefinition("Date", "Date");
      MT097.U0004.Elements.Add((SwiftDefinitionElement) MT097.U0005);
      MT097.U0006 = new SwiftTagSubItemDefinition("FullTime", "Full Time");
      MT097.U0004.Elements.Add((SwiftDefinitionElement) MT097.U0006);
      MT097.U0007 = new SwiftTagSubItemDefinition("MessageInputReference_106", "");
      MT097.U0004.Elements.Add((SwiftDefinitionElement) MT097.U0007);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U0004);
      MT097.U0008 = new SwiftTagDefinition("AcceptReject_451", "Accept Reject");
      MT097.U0008.TagName = "{451:";
      MT097.U000E = new SwiftTagSubItemDefinition("AcceptReject", "Accept Reject");
      MT097.U0008.Elements.Add((SwiftDefinitionElement) MT097.U000E);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U0008);
      MT097.U000F = new SwiftTagDefinition("AbortReason_432", "Abort Reason");
      MT097.U000F.TagName = "{432:";
      MT097.U000F.Mandatory = false;
      MT097.U0010 = new SwiftTagSubItemDefinition("AbortReason", "");
      MT097.U000F.Elements.Add((SwiftDefinitionElement) MT097.U0010);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U000F);
      MT097.U0011 = new SwiftTagDefinition("PaymentReleaseInformationSender_114", "Payment Release Information Sender");
      MT097.U0011.TagName = "{114:";
      MT097.U0011.Mandatory = false;
      MT097.U0012 = new SwiftTagSubItemDefinition("PaymentReleaseInformationSender", "Payment Release Information Sender");
      MT097.U0011.Elements.Add((SwiftDefinitionElement) MT097.U0012);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U0011);
      MT097.U0013 = new SwiftTagDefinition("PaymentRealeaseInformationReceiver_115", "Payment Release Information Receiver");
      MT097.U0013.TagName = "{115:";
      MT097.U0013.Mandatory = false;
      MT097.U0014 = new SwiftTagSubItemDefinition("PaymentReleaseInformationReceiver", "Payment Release Information Receiver");
      MT097.U0013.Elements.Add((SwiftDefinitionElement) MT097.U0014);
      MT097.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT097.U0013);
    }
  }
}
